Python暴力破解MD5加密字符串

您所在的位置:网站首页 python 爆破多个未知字母 Python暴力破解MD5加密字符串

Python暴力破解MD5加密字符串

2024-04-16 16:06| 来源: 网络整理| 查看: 265

首先,MD5是不可逆的消息摘要算法,也就是说,不能根据MD5值逆向解密出原信息;但是,MD5通常被用于对密码进行处理,而密码长度是有限的,我们只需要配对出这些组合的MD5值,就可以实现所谓的解密,这种方法也叫暴力破解;

这种暴力破解方法只适用于有限长度的密码,且密码长度每增加一位,有可能的组合数量都会呈几何级数增长;

一个纯数字的8位长度的密码,就有一亿种组合,如果包含大小写字母(不包含特殊字符),就有62^8种组合;

所以最好是使用弱密码字典来进行猜解,这里提供一个非常强大的密码字典:

1400多万个弱口令密码字典下载

Python暴力破解MD5源码 """ 简易MD5破解工具 https://www.perfcode.com/p/python-crack-md5-hash.html """ import threading from hashlib import md5 as _md5 def MD5(bytes): m=_md5() m.update(bytes) return m.hexdigest() class _PWDict: def __init__(self,filename): self.mutex = threading.Lock() self.fp = open(filename,'rb') def get(self): with self.mutex: bytes = self.fp.readline() return bytes.strip() class _crackMD5: def __init__(self,md5,PWDict,func=None,threadQuantity=5): self.md5 = md5.lower() self.D = PWDict if func: self.func = func else: self.func = print self.threadQuantity = threadQuantity self.status = False self.T = [] def _run(self): while self.status: bytes = self.D.get() if self.md5 == MD5(bytes): self.status = False self.func(bytes) def start(self): self.status = True for i in range(self.threadQuantity): thread = threading.Thread(target=self._run) thread.start() self.T.append(thread) def main(): import sys if len(sys.argv) < 3: print("usage: crackmd5.py md5-hash dictionary_file [thread_quantity]") return md5 = sys.argv[1] if len(md5)!=32: print('只支持长度位32的MD5 HASH') return dict_file = sys.argv[2] try: D = _PWDict(dict_file) except Exception as e: print(e) return if len(sys.argv) >3: tc=int(sys.argv[3]) if tc


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3